I've been getting more and more interested in blockchain technology lately, and I was wondering what skills are important for a successful Solidity developer? I know it's a language for writing smart contracts, but what specific technical knowledge and practical skills should a person have to be able to work effectively with this language?